iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
0
Security

點錯遊戲的我也只好硬著頭皮上了 系列 第 26

[網頁漏洞] - 資料庫漏洞 - 世界上最好的語言

  • 分享至 

  • xImage
  •  

1 都解不了了,有機會看到2嗎...


15. cereal hacker 1- Points: 450

Login as admin. https://2019shell1.picoctf.com/problem/45142/ or http://2019shell1.picoctf.com:45142
https://ithelp.ithome.com.tw/upload/images/20201014/201036883XLfv54yFJ.png

HINT:

無...
喂,連 HINT 都不給啊

WRITEUP:

標準的帳號登入頁面,能夠輸入帳號與密碼。雖然沒有任何提示,但可以注意到網址與之前不同,是帶有index.php的檔案。本題應該與 php 漏洞有關係才是...

於是先 google “php load another php injection”,得知此類的漏洞正式名稱為 Local File Includsion。輸入了幾個基本的注入,嘗試讀取系統檔案或是執行指令:

    login; phpinfo()
    file=/etc/passwd
    file=cat /etc/passwd

結果都失敗,反倒是猜到了一個頁面 file=admin 顯示如下
https://2019shell1.picoctf.com/problem/45142/index.php?file=admin
https://ithelp.ithome.com.tw/upload/images/20210122/20103688gUcYFOu0Bb.png

趕緊來看 source code 有無任何提示

                                <div class="form-label-group">
                                    <input type="text" id="user" name="user" class="form-control" placeholder="Username" required autofocus>
                                    <label for="user">Username</label>
                                </div>

                                <div class="form-label-group">
                                    <input type="password" id="pass" name="pass" class="form-control" placeholder="Password" required>
                                    <label for="pass">Password</label>
                                </div>

很可惜的沒有可用的訊息。
再回去研究剛剛提到的 php 的漏洞 Local File Inclusion,尚有一個進階的遠端讀取的漏洞 Remote File Inclusion,其實也就是讀取的檔案變成從別的伺服器。
好不容易找到一個網路上的範例檔,結果也是 No such file。看來想從呼叫 phpinfo() 列出環境訊息是行不通了。

在沒有新的資訊下,回到遊戲教學的文件偷看查看是否有提示,得知 php 相關的漏洞應用是一種稱為反序列的相關技術 Objectc Injection。但是前提必須知道 class 名稱才有辦法再注入其他變數的值。即使亂猜 class 也失敗收場...


卡到懷疑人生,明明應該先來簡單一點的漏洞才是呀,只好再看參考一下高手的答案
好的呀,瞄到居然有個 guest/guest 帳密,不只弱密碼,居然疏忽了弱帳號這個弱點!! 誰知道啊! (Jhon 表示: 你忘了我和我的伙伴嗎?)

https://ithelp.ithome.com.tw/upload/images/20210122/20103688Uk41QUwuKZ.png

登入後果然在 cookie 多了一個 user_info 的設定,看到明顯的數字與英文的組合,丟到 https://www.base64decode.org/ 以 base64 的方式解開得出

O:11:"permissions":2:{s:8:"username";s:5:"guest";s:8:"password";s:5:"guest";}6çp

嗯,這時上頭先學到的 object injection 派上用場了,將 username 修改後再編碼回 base64 丟回 cookie。

O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:5:"guest";}

Wha 還失敗? 再測試是否能注入特殊的語法:

O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:10:"1" OR 1=1"";}
O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:10:"'OR 1=1 /*";}

都失敗,越想越不對...應該沒有難成這樣吧。

至此放棄了第2次,結果發現...方法對了,只是payload 沒有試到正確的,換上單引號 ‘ ,並在最後少一個單引號即可 (可在之後的題目 cereal hacker 2 找到 php 的語法)

O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:12:"1' OR '1'='1";}

encode 後

TzoxMToicGVybWlzc2lvbnMiOjI6e3M6ODoidXNlcm5hbWUiO3M6NToiYWRtaW4iO3M6ODoicGFzc3dvcmQiO3M6MTI6IjEnIE9SICcxJz0nMSI7fQ

https://ithelp.ithome.com.tw/upload/images/20210122/201036884Gi2aS8GCA.png

這一題可說是遺憾中的遺憾,一開始知道程式語言使用 php 了,以為會簡單不少,想不到忽略了基本的弱帳弱密漏洞,最後即使方法對了,還是因為不夠了解 php 的語法而失敗收場。

即使如此在嘗試 payload 的過程中也獲得了較多php object injection 的文章,包含如何延伸攻擊,以及
實作影片獲得新工具 hackbar for chrome!也是收獲不少。

後記: 解到 cereal hacker 2 才發現這題有 walkthrough 可以點...

Edit the cookie values into a simple SQL injection.

是說這個前提也要先猜出 guest 帳號...

ANSWER: picoCTF{41f9ada4385bd93a3b15eead30841230}


上一篇
[網頁漏洞] 資料庫漏洞 - 特殊口味的綿花糖
下一篇
[網頁漏洞] JavaScript - 修正修正圖檔
系列文
點錯遊戲的我也只好硬著頭皮上了 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言